home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Graphics / HippoDraw / HippoDraw.app / Example.m next >
Text File  |  1993-07-18  |  2KB  |  74 lines

  1. /* Example.m      by Paul Kunz    July 1993
  2.  * An example of HippoDraw plot function.   It's a
  3.  * straight line as in
  4.  *
  5.  *    y = a + b*x
  6.  *
  7.  * Copyright (C)  1993  The Board of Trustees of
  8.  * The Leland Stanford Junior University. All Rights Reserved.
  9.  */
  10.  
  11. /* import the super class */
  12. #import "PFunction.h"
  13.  
  14. /* Declare the interface */
  15. @interface Example : PFunction
  16. {
  17. }
  18.  
  19. - init;
  20.  /*
  21.   * The designated initialzer and the only method that needs to be
  22.   * implemented..
  23.   */
  24.   
  25. @end
  26.  
  27. @implementation Example 
  28.  
  29. /* 
  30.  * The following is the function that will be called for plotting
  31.  *     double x    is the value along the x-axis
  32.  *    double binW    is the width of histogram bins. You function
  33.  *            should use it as overall scale factor.
  34.  *    double *par    is an array of the function's parameters
  35.  *    double example() returns a double value
  36.  */
  37. static double example(double x, double binW, double *par )
  38. {
  39.     double result;
  40.  
  41.     result = binW * (par[0]  + par[1]*x);
  42.     return result;
  43. }
  44.  
  45. /* 
  46.  * The following is the only method that needs to be implemented 
  47.  */
  48. - init
  49. {
  50.     [super init];
  51.     
  52.   /* Set the name of the function as it will appear in the function browser */
  53.     [self setTitle:"Example"];
  54.     
  55.   /* Set the function pointer to the static function above */
  56.     [self setFunctionPtr:example];
  57.     
  58.   /* Set the number of parameters of the function */
  59.     [self setNumberArgs:2];
  60.     
  61.   /* The following must be invoked only after the above is done */
  62.     [self registerFunc];
  63.     
  64.   /* Set the name of the parameters as they will appear
  65.    * in the function browser */
  66.     [self setArgName:"yintercept" at:0];
  67.     [self setArgName:"slope" at:1];
  68.     
  69.   /* That's all folks! */
  70.     return self;
  71. }
  72.  
  73. @end
  74.